package cn.source.zk.service;

import cn.source.zk.domain.entity.Channel;
import cn.source.zk.domain.entity.Sort;
import cn.source.zk.domain.vo.DeviceAndChannelByTdGuidVO;

import java.util.ArrayList;
import java.util.List;

public interface IZkChannelService {

    /**
     * 查询通道分页列表
     * @param channel
     * @return
     */
    List<Channel> listPage(Channel channel);

    /**
     * 新增通道
     * @param channel
     * @return
     */
    int add(Channel channel);

    /**
     * 根据Num查询通道
     * @param num
     * @return
     */
    Channel getByNum(Long num);

    /**
     * 根据tdGuids列表获取对应的通道列表
     * @param tdGuids
     * @return
     */
    List<Channel> getByTdGuids(List<String> tdGuids);

    /**
     * 修改通道
     * @param channel
     * @return
     */
    int edit(Channel channel);

    /**
     * 删除通道
     * @param nums
     * @return
     */
    int remove(List<Long> nums);

    Boolean checkChannelNameExist(String channelName,Long num, Long deviceNum);

    /**
     * 根据tdGuid获取设备ID
     * @param tdGuid
     * @return
     */
    String getDeviceByTdGuid(String tdGuid);

    /**
     * 根据deviceNum列表获取通道列表
     * @param nums
     */
    List<Channel> getChannelByDeviceNums(List<Long> nums);

    /**
     * 根据并网点num列表查询channel
     * @param nums
     * @return
     */
    List<Channel> getByConnectionPointNums(List<Long> nums);

    /**
     * 根据设备num列表查询通道列表
     * @param deviceNums
     * @return
     */
    List<Channel> getChannelListByDeviceNums(ArrayList<Long> deviceNums);

    List<Sort> getSortList(Long deviceNum);

    /**
     * 根据tdGuid查询设备名称和通道名称
     * @param tdGuid
     * @return
     */
    DeviceAndChannelByTdGuidVO getDeviceAndChannelByTdGuid(String tdGuid);
}
